/** * run the program * * @author Bijan Tajmir * */ import java.lang.*; public class TestItem { public static void main(String[] args) { Item airfilter = new Item("1011","Air Filters",200,10.5); Item doorknobs = new Item("1034","Door Knobs",60,21.5); Item hammers = new Item("1101","Hammers",90,9.99); Item levels = new Item("1600","Levels",80,19.99); Item ceilingfans = new Item("1500","Ceiling Fans",100,59); Item wrenchsets = new Item("1201","Wrench Sets",55,80); Item[] items = new Item[] {hammers, doorknobs, airfilter, levels, ceilingfans, wrenchsets}; Item[] newitems = new Item[6]; System.out.println("Original Array:"); System.out.println(); System.out.println("itemID itemName inStore price"); System.out.println("-------------------------------------"); printitems(items); System.out.println(); System.out.println("Sorted by ID:"); System.out.println(); System.out.println("itemID itemName inStore price"); System.out.println("-------------------------------------"); sortID(items,1); printitems(items); System.out.println(); System.out.println("Sorted by Name:"); System.out.println(); System.out.println("itemID itemName inStore price"); System.out.println("-------------------------------------"); newitems = sortNames(items,2); printitems(newitems); System.out.println(); System.out.println("Sorted by Store:"); System.out.println(); System.out.println("itemID itemName inStore price"); System.out.println("-------------------------------------"); sortStores(newitems,1); printitems(newitems); System.out.println(); System.out.println("Sorted by Price:"); System.out.println(); System.out.println("itemID itemName inStore price"); System.out.println("-------------------------------------"); sortPrices(newitems,0,5); printitems(newitems); } public static void printitems(Item[] a) { for(int i = 0; i < a.length; i++) { System.out.println(a[i].toString()); } } public static void sortID(Item[] a, int b) { if(b==1) { for (int i = 0; i < a.length - 1; ++i) { int minIndex = i; for (int j = i + 1; j < a.length; ++j) { if ((a[j].getID()).compareTo(a[minIndex].getID()) < 0) { minIndex = j; } } Item temp = a[i]; a[i] = a[minIndex]; a[minIndex] = temp; } } else if (b==2) { for (int i = 0; i < a.length - 1; ++i) { int minIndex = i; for (int j = i + 1; j < a.length; ++j) { if ((a[j].getID()).compareTo(a[minIndex].getID()) > 0) { minIndex = j; } } Item temp = a[i]; a[i] = a[minIndex]; a[minIndex] = temp; } } else { System.out.println("ERROR"); } } public static Item[] sortNames(Item[] a, int b) { Item[] newlist = new Item[a.length]; if(b==1) { for(int i=0;i<a.length;i++) { String next = a[i].getName(); int insert = 0; int k =i; while(k>0 && insert == 0) { if(next.compareTo( newlist[k-1].getName() ) > 0) { insert = k; } else { newlist[k] = newlist[k-1]; } k--; } newlist[insert]=a[i]; } return newlist; } else if (b==2) { for(int i=0;i<a.length;i++) { String next = a[i].getName(); int insert = 0; int k =i; while(k>0 && insert == 0) { if(next.compareTo( newlist[k-1].getName() ) < 0) { insert = k; } else { newlist[k] = newlist[k-1]; } k--; } newlist[insert]=a[i]; } return newlist; } else { return newlist; } } public static void sortStores(Item[] a, int b) { Item temp; int i; int k; int posmax; if(b==1) { for ( i = a.length - 1 ; i > 0 ; i-- ) { posmax = 0; for ( k = 1 ; k <= i ; k++ ) { if ( a[ k ].getStore() > a[ posmax ].getStore() ) { posmax = k; } } temp = a[ i ]; a[ i ] = a[posmax ]; a[ posmax ] = temp; } } else if (b==2) { for ( i = a.length - 1 ; i > 0 ; i-- ) { posmax = 0; for ( k = 1 ; k <= i ; k++ ) { if ( a[ k ].getStore() < a[ posmax ].getStore() ) { posmax = k; } } temp = a[ i ]; a[ i ] = a[posmax ]; a[ posmax ] = temp; } } else { System.out.println("ERROR"); } } public static void sortPrices(Item[] a, int low, int high) { if ( low == high ) { return; } int mid = ( low + high ) / 2; sortPrices( a, low, mid ); sortPrices( a, mid + 1, high); mergePrices( a, low, mid, high); } public static void mergePrices( Item[] a, int low, int mid, int high ) { Item[] temp = new Item[ high - low + 1 ]; int i = low, j = mid + 1, n = 0; while ( i <= mid || j <= high ) { if ( i > mid ) { temp[ n ] = a[ j ]; j++; } else if ( j > high ) { temp[ n ] = a[ i ]; i++; } else if ( a[ i ].getPrice() > a[ j ].getPrice() ) { temp[ n ] = a[ i ]; i++; } else { temp[ n ] = a[ j ]; j++; } n++; } for ( int k = low ; k <= high ; k++ ) { a[ k ] = temp[ k - low ]; } } }